import globalMethods from '@/plugins/methods';
import closeWindow from "@/helper/close";

/**
 * @description 安全地解析 json 字符串
 * @param {String} jsonString 需要解析的 json 字符串
 * @param {String} defaultValue 默认值
 */
export function parse(jsonString = '{}', defaultValue = {}) {
  let result = defaultValue;
  try {
    result = JSON.parse(jsonString);
  } catch (error) {
    console.log(error);
  }
  return result;
}

/**
 * @description 接口请求返回
 * @param {Any} data 返回值
 * @param {String} msg 状态信息
 * @param {Number} code 状态码
 */
export function response(data = {}, msg = '', code = 0) {
  return [
    200,
    {
      code,
      msg,
      data
    }
  ];
}

/**
 * @description 接口请求返回 正确返回
 * @param {Any} data 返回值
 * @param {String} msg 状态信息
 */
export function responseSuccess(data = {}, msg = $.i18n('common.sucess.label')) {
  return response(data, msg);
}

/**
 * @description 接口请求返回 错误返回
 * @param {Any} data 返回值
 * @param {String} msg 状态信息
 * @param {Number} code 状态码
 */
export function responseError(
  data = {},
  msg = $.i18n('proptree.setting.requestFailed'),
  code = 500
) {
  return response(data, msg, code);
}

/**
 * @description 记录和显示错误
 * @param {Error} error 错误对象
 * @param {Boolean} isToast 是否启用toast提示
 */
export function errorLog(error, isToast = false,close=false) {
  // 打印到控制台
  if (process.env.NODE_ENV === 'development') {
    console.error('>>>>>> Error >>>>>>');
    console.log(error);
  }
  const handle={
    onOk() {
      console.log('OK');
      if (close){
        closeWindow();
      }
    },
  }
  //弹窗提示
  if (isToast) {
    globalMethods.message.error(error.message);
  } else {
    globalMethods.error({content: error.message, ...handle});
  }
}

/**
 * @description 创建一个错误
 * @param {String} msg 错误信息
 * @param {Boolean} isToast 是否启用toast提示
 */
export function errorCreate(msg, isToast = false) {
  const error = new Error(msg);
  errorLog(error, isToast);
  throw error;
}
